Decoding method an apparatus for detection of watermarks in a compressed video bitsream

ABSTRACT

A video encoder, decoder, and methods for watermarking video content are disclosed; the encoder including a quantization unit for quantizing coefficients of the video bitstream, and an embedding unit in signal communication with the quantization unit for embedding bits of the digital fingerprint in blocks of the video bitstream as a function of the parity of the number of coded coefficients in the block; and the decoder including a detection unit for detecting bits of the digital fingerprint in blocks of the video bitstream as a function of the parity of the number of coded coefficients in the block, and an inverse-quantization unit in signal communication with the detection unit for inverse-quantizing coefficients of the video bitstream.

CROSS-REFERENCE TO RELATED APPLICATION

This application claims the benefit of U.S. Provisional Application Ser.No. 60/482,302 (Attorney Docket No. PU030163), filed Jun. 25, 2003 andentitled “METHOD AND APPARATUS FOR INSERTION AND DETECTION OFFINGERPRINTS IN A COMPRESSED VIDEO BITSTREAM”, which is incorporatedherein by reference in its entirety.

FIELD OF THE INVENTION

The present invention is directed towards video encoders and decoders,and more particularly, towards an apparatus and method for watermarkinsertion and/or detection.

BACKGROUND OF THE INVENTION

It is often desirable to be able to identify the source of compressedvideo bitstreams, such as, for example, to identify the unauthorizeddistributors of copyrighted material. The encoder used to create abitstream can be uniquely identified by insertion of a fingerprint (orwatermark) during the encoding process. Ideally, the watermark insertionprocess should be of low additional computational complexity, and thewatermark should be visually undetectable and have a very low impact oncoding efficiency.

Numerous techniques have been proposed for inserting invisible robustand/or fragile watermarks into compressed images and video. One class oftechniques generates a watermark signal in the Discrete Cosine Transform(DCT), wavelet or other transform domains, based on Human Visual System(HVS) sensitivity to frequency response.

Some systems operate on quantized DCT transform coefficients of JPEG orMPEG compressed images/video, where the Least Significant Bit (LSB) ofcertain transform coefficients is adjusted to match the parity of awatermark signal bit.

Accordingly, there is a need for an encoder and decoder with lowadditional computational complexity for insertion and detection ofsubstantially visually undetectable watermarks.

SUMMARY OF THE INVENTION

These and other drawbacks and disadvantages of the prior art areaddressed by an apparatus and method for insertion and detection ofsubstantially visually undetectable watermarks.

In accordance with the principles of the present invention, a decoderfor detecting watermarked video content is disclosed; the decoderincluding a detection unit for detecting bits of the digital fingerprintin blocks of the video bitstream as a function of the parity of thenumber of coded coefficients in the block, and an inverse-quantizationunit in signal communication with the detection unit forinverse-quantizing coefficients of the video bitstream.

These and other aspects, features and advantages of the presentinvention will become apparent from the following description ofexemplary embodiments, which is to be read in connection with theaccompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention may be better understood in accordance with thefollowing exemplary figures, in which:

FIG. 1 shows a flowchart for a block encoder;

FIG. 2 shows a flowchart for a block encoder with fingerprint insertionin accordance with the principles of the present invention;

FIG. 3 shows a flowchart for a block encoder with forced fingerprintinsertion in accordance With the principles of the present invention;

FIG. 4 shows a flowchart for a block encoder with required fingerprintinsertion in accordance with the principles of the present invention;

FIG. 5 shows a flowchart for a block decoder with fingerprint detectionin accordance with the principles of the present invention;

FIG. 6 shows a block diagram for a video encoder having a block encoderfor fingerprint insertion in accordance with the principles of thepresent invention; and

FIG. 7 shows a block diagram for a video decoder having a block decoderfor fingerprint detection in accordance with the principles of thepresent invention.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

Embodiments of the present invention provide a method and apparatus withlow additional computational complexity for insertion and detection ofsubstantially visually undetectable watermarks. In the description thatfollows, an encoder and decoder may be collectively referred to as aCODEC for purposes of simplicity, although method and apparatusembodiments may be capable of only encoding, only decoding, or bothencoding and decoding. Like elements may be indicated by like referencenumerals having figure-specific digits in the hundreds position of thevarious figures. The terms “watermark” and “fingerprint” are usedinterchangeably herein.

Popular video compression standards, such as MPEG-2, MPEG-4, and JVTcontain intra-coded I frames, and inter-coded P and B frames. Randomaccess points in compressed video bitstreams may be made possible bygrouping pictures into Groups of Pictures (GOPs) in MPEG-2, orIndependent Decoder Refresh periods (IDRs). In these standards, thecoded pictures are divided into non-overlapping blocks. Each block istransformed, using a Discrete Cosine Transform (DCT) or similartransformation, quantized, and run-length coded, such that only thenon-zero quantized coefficients are coded. The quantization process maybe uniform or non-uniform, and may employ dead-zones and/orthresholding. For example, the JVT JM reference software employs athreshold by which if the number of non-zero coefficients after a firststage of a quantization process is less than a threshold value, T, asecond stage of the quantization process is applied to force allcoefficients in the block to be quantized to zero.

The present description illustrates the principles of the invention. Itwill thus be appreciated that those skilled in the art will be able todevise various arrangements that, although not explicitly described orshown herein, embody the principles of the invention and are includedwithin its spirit and scope.

All examples and conditional language recited herein are intended forpedagogical purposes to aid the reader in understanding the principlesof the invention and the concepts contributed by the inventor tofurthering the art, and are to be construed as being without limitationto such specifically recited examples and conditions.

Moreover, all statements herein reciting principles, aspects, andembodiments of the invention, as well as specific examples thereof, areintended to encompass both structural and functional equivalentsthereof. Additionally, it is intended that such equivalents include bothcurrently known equivalents as well as equivalents developed in thefuture, i.e., any elements developed that perform the same function,regardless of structure.

Thus, for example, it will be appreciated by those skilled in the artthat the block diagrams presented herein represent conceptual views ofillustrative circuitry embodying the principles of the invention.Similarly, it will be appreciated that any flow charts, flow diagrams,state transition diagrams, pseudocode, and the like represent variousprocesses which may be substantially represented in computer readablemedia and so executed by a computer or processor, whether or not suchcomputer or processor is explicitly shown.

The functions of the various elements shown in the figures may beprovided through the use of dedicated hardware as well as hardwarecapable of executing software in association with appropriate software.When provided by a processor, the functions may be provided by a singlededicated processor, by a single shared processor, or by a plurality ofindividual processors, some of which may be shared. Moreover, explicituse of the term “processor” or “controller” should not be construed torefer exclusively to hardware capable of executing software, and mayimplicitly include, without limitation, digital signal processor (“DSP”)hardware, read-only memory (“ROM”) for storing software, random accessmemory (“RAM”), and non-volatile storage.

Other hardware, conventional and/or custom, may also be included.Similarly, any switches shown in the figures are conceptual only. Theirfunction may be carried out through the operation of program logic,through dedicated logic, through the interaction of program control anddedicated logic, or even Manually, the particular technique beingselectable by the implementer as more specifically understood from thecontext.

In the claims hereof, any element expressed as a means for performing aspecified function is intended to encompass any way of performing thatfunction including, for example, a) a combination of circuit elementsthat performs that function or b) software in any form, including,therefore, firmware, microcode or the like, combined with appropriatecircuitry for executing that software to perform the function. Theinvention as defined by such claims resides in the fact that thefunctionalities provided by the various recited means are combined andbrought together in the manner which the claims call for. Applicant thusregards any means that can provide those functionalities as equivalentto those shown herein.

As shown in FIG. 1, a block encoder is indicated generally by thereference numeral 100. The block encoder 100 includes a begin block 110that passes control to function block 114. The function block 114predicts a block using Intra or Inter prediction, forming a residualblock, and passes control to a function block 116. The function block116, in turn, transforms the residual block, forming transformcoefficients, and passes control to a function block 118. The functionblock 118 quantizes the transform coefficients, forming quantizedcoefficients, and passes control to a function block 120. The functionblock 120, in turn, initializes a variable N to the number of non-zeroquantized coefficients in the block, and passes control to a decisionblock 122. The decision block 122 checks whether N is zero, and if N isnot zero, passes control to a function block 136 which entropy codes theblock, and then passes control to an end block 139. If, however, N isequal to zero, the decision block 122 passes control to a function block137, which does not code the block and either indicates the non-codedblock with a coded block pattern (CBP) or by skipping the macroblock.The function block 137, in turn, passes control to the end block 139.

Thus, FIG. 1 shows a flowchart of the block encoding process for ablock-based video encoder. An inter or intra prediction is formed forthe block, and subtracted from the block to form a residual block. Foran inter prediction, motion compensation is generally used. Intraprediction is done differently for different coding standards, butalways uses information from neighboring blocks or macroblocks in thesame coded picture. The residual block is then transformed, using ablock transform, to form transform coefficients. The transformcoefficients are quantized, to form quantized coefficients. The numberof quantized coefficients whose values are non-zero, N, are counted. IfN is equal to zero, the block is not coded. If other blocks in the samemacroblock are coded, the non-coding of the block is indicated using acoded block pattern (CBP). If all blocks in the same macroblock are notcoded, the macroblock is skipped. If the block is to be coded, thenon-zero coefficients are entropy coded using runlength coding.

Embodiments of the present invention provide a low-complexity method ofinserting and detecting a unique fingerprint in compressed videostreams. A method for insertion and detection of a fragile digitalfingerprint (or watermark) in a compressed video bitstream is described,in order to be able to identify the encoder used to create thecompressed video bitstream. The method is particularly well suited toinclusion in an MPEG AVC/ITU H.264 bitstream. One bit of a uniqueidentification code (fingerprint) is embedded into a coded block in thebitstream by matching the parity of the number of coded coefficients inthe block to the bit value of the code.

This embodiment allows a unique fingerprint to be embedded into acompressed video bitstream by a video compression encoder, during theencoding process. A unique fingerprint sequence, FSEQ, of length L bitsis created, to uniquely identify the video encoder.

During the video compression encoding process, one bit from thefingerprint sequence is embedded into a coded block, by forcing theparity of the total number of coded (non-zero) coefficients for theblock to match the bit of the fingerprint sequence. The total number ofcoefficients can refer either to the AC coefficients only, or to the ACand DC coefficients. For a 0 bit, an even number of non-zerocoefficients must be coded, while for a 1 bit an odd number of non-zerocoefficients must be coded.

Turning to FIG. 2, a block encoder with fingerprint insertion isindicated generally by the reference numeral 200. The block encoder 200includes a begin block 210 that passes control to function block 214.The function block 214 predicts a block using Intra or Inter prediction,forming a residual block, and passes control to a function block 216.The function block 216, in turn, transforms the residual block, formingtransform coefficients, and passes control to a function block 218. Thefunction block 218 quantizes the transform coefficients, formingquantized coefficients, and passes control to a function block 220.

The function block 220, in turn, initializes a variable N to the numberof non-zero quantized coefficients in the block, and passes control to adecision block 222. The decision block 222 checks whether N is zero, andif N is equal to zero, passes control to a function block 237, whichdoes not code the block and either indicates the non-coded block with acoded block pattern (CBP) or by skipping the macroblock. The functionblock 237, in turn, passes control to an end block 239. If, however, Nis not equal to zero, the decision block 222 passes control to afunction block 230, which acquires the next bit of the fingerprintsequence F, and passes control to a decision block 232. The decisionblock 232 checks whether the fingerprint sequence F is equal to N modulo2, and if F is equal to N modulo 2, passes control to a function block236 which entropy codes the block, and then passes control to the endblock 239. If, however, F is not equal to N modulo 2, the decision block232 passes control to a function block 234, which re-quantizes the blockto force a new value of N where F is equal to N modulo 2 and N isgreater than zero. The function block 234, in turn, passes control tothe function block 236, which is described above.

Thus, FIG. 2 shows the block encoding process for block-based videoencoder with fingerprint insertion. An inter or intra prediction isformed for the block, and subtracted from the block to form a residualblock. The residual block is then transformed, using a block transform,to form transform coefficients. The transform coefficients arequantized, to form quantized coefficients. The number of quantizedcoefficients whose values are non-zero, N, are counted. If N is equal tozero, the block is not coded, and a fingerprint sequence bit is notembedded into this block. If N≠0, the block is coded, and a bit F of thefingerprint sequence is to be embedded into the block. If N % 2 (where %is the modulo operator) is equal to F, no action is necessary to embedbit F into the block, and it is entropy coded. If N % 2 is not equal toF, the block is re-quantized to force a new value of N, such that N %2=F and N>0.

If other blocks in the same macroblock are coded, the non-coding of ablock is indicated using a coded block pattern (CBP). If all blocks inthe same macroblock are not coded, the macroblock is skipped. If theblock is to be coded, the non-zero coefficients are entropy coded usingrunlength coding.

When re-quantization of the block is necessary, an encoder may chooseany method of re-quantizing the block such that the new value of N meetsthe conditions that N % 2=F and N>0. The number of non-zero coefficientsin the block may be increased or decreased by one to match thefingerprint signal bit by re-quantizing the block. It is necessary thatthe re-quantization process not create blocks with no non-zerocoefficients, as these blocks will not be coded, and hence the watermarkdetector would be unable to determine that this block had a fingerprintbit embedded in it. So, if the number of non-zero coefficients in ablock is one, the number must be increased rather than decreased.

The value of N may be decreased by one by re-quantizing to zero atransform coefficient that had originally corresponded to a non-zeroquantized coefficient. The encoder could choose the lowest valuetransform coefficient or highest frequency position nonzero coefficientto be re-quantized to zero, for examples, to minimize the effect oncompressed video quality.

The value of N may be increased by re-quantizing a zero valued quantizedcoefficient to a non-zero value, for example—set to 1. The encoder maychoose to re-quantize to 1 the transform coefficient in the positionthat is one higher frequency position in scan order to the last non-zeroquantized coefficient of the first quantization stage. In the JVTcompression standard, when CAVLC entropy coding is used, trailing onesare efficiently encoded, so adding a non-zero coefficient in this mannerwill have very little impact on the number of bits required to encodethis block. The same strategy can be used with other entropy codingmethods, such as CABAC.

A pattern for selecting which coded blocks to embed a fingerprint bitinto is pre-determined, and used by the encoder and the fingerprintdetector. The first L coded blocks may be used, to encode the L-bitsequence. Alternatively, every Mth coded block, for any pre-determinedvalue of M, could be used to code the L-bit sequence in L*M codedblocks. Other patterns may also be used.

The L-bit fingerprint sequence can be repeated many times in the videosequence, or inserted only once. Once the entire L-bit sequence has beenembedded, the fingerprint embedding process can stop until a specifiedrestart point is reached. In a preferred embodiment, the L-bitfingerprint sequence is repeated for every Group of Pictures or IDR.

An encoder may choose to require that the entire L-bit sequence beembedded into some number of video pictures, slices or macroblocks,which corresponds to some number of blocks, B. In a preferredembodiment, the encoder requires that the entire L-bit sequence beencoded in every I picture.

Before encoding of a video picture, while it is known how many blocksthe video picture is divided into, it is unknown how many of thoseblocks will be classified as not coded. Only blocks classified as codedare used for embedding a fingerprint bit. In order to meet theconstraint that the entire L-bit fingerprint sequence be embedded into adesired number of blocks, B, the encoder can force blocks that wouldhave originally been not-coded to be coded, so that a fingerprint bitmay be embedded into that block. This is done by re-quantizing the blocksuch that its new number of non-zero coefficients N is greater thanzero.

Turning now to FIG. 3, a block encoder with forced fingerprint insertionis indicated generally by the reference numeral 300. The block encoder300 includes a begin block 310 that passes control to function block314. The function block 314 predicts a block using Intra or Interprediction, forming a residual block, and passes control to a functionblock 316. The function block 316, in turn, transforms the residualblock, forming transform coefficients, and passes control to a functionblock 318. The function block 318 quantizes the transform coefficients,forming quantized coefficients, and passes control to a function block320.

The function block 320, in turn, initializes a variable N to the numberof non-zero quantized coefficients in the block, and passes control to afunction block 330, which acquires the next bit of the fingerprintsequence F, and passes control to a decision block 333. The decisionblock 333 checks whether the fingerprint sequence F is equal to N modulo2 and whether N is greater than zero, and if both conditions are true,passes control to a function block 336 which entropy codes the block,and then passes control to an end block 339. If, however, F is not equalto N modulo 2 or N is not greater than zero, the decision block 333passes control to a function block 334, which re-quantizes the block toforce a new value of N where F is equal to N modulo 2 and N is greaterthan zero. The function block 334, in turn, passes control to thefunction block 336, which is described above.

Thus, FIG. 3 shows a block encoder with a forced fingerprint insertion.That is, the block is not allowed to be not coded, so that it isguaranteed that the fingerprint bit is embedded in this block. The firstfew steps are identical to those of FIG. 2. An inter or intra predictionis formed for the block, and subtracted from the block to form aresidual block. The residual block is then transformed, using a blocktransform, to form transform coefficients. The transform coefficientsare quantized, to form quantized coefficients. The number of quantizedcoefficients whose values are non-zero, N, are counted. The followingsteps differ from FIG. 2. If N>0 and F=N % 2, the block can be entropycoded. But if those conditions are not met, the block must bere-quantized so that the value of N is changed such that the conditionsare met. Unlike in FIG. 2, this requantization step can be required ifN=0, i.e., if after the initial quantization the block would not havebeen coded.

An encoder that is required to embed the entire L-bit fingerprintsequence within B blocks, can keep track of the block count, and thecoded block count, cbc. Then when the number of blocks left to encode isno longer greater than the number of fingerprint bits left to embed, theencoder could force the remaining blocks be coded, i.e. not allowed tobe classified as not-coded.

As shown in FIG. 4, a block encoder with required fingerprint insertionis indicated generally by the reference numeral 400. The block encoder400 includes a begin block 410 that passes control to a begin loop block412, which initializes and later increments a loop counter bc betweenzero and a maximum value B. The begin loop block passes control to afunction block 414. The function block 414 predicts a block using Intraor Inter prediction, forming a residual block, and passes control to afunction block 416. The function block 416, in turn, transforms theresidual block, forming transform coefficients, and passes control to afunction block 418. The function block 418 quantizes the transformcoefficients, forming quantized coefficients, and passes control to afunction block 420.

The function block 420 initializes a variable N to the number ofnon-zero quantized coefficients in the block, and passes control to afunction block 430. The function block 430 gets the next bit of thefingerprint sequence F=FSEQ[cbc], and passes control to a decision block422. The decision block 422 checks whether N is zero, and if N is equalto zero, passes control to a decision block 424 which checks whether Bminus bc is greater than the number of fingerprint sequence bits (L)minus the coded block count (cbc). If the comparison is true, thedecision block 424 passes control to a function block 437, which doesnot code the block and either indicates the non-coded block with a codedblock pattern (CBP) or by skipping the macroblock. The function block437, in turn, passes control to an end loop block 438, which passescontrol back to the begin loop block 412 if the loop counter bc has notreached the maximum value B, or passes control to an end block 439 ifthe loop counter bc has reached the maximum value B. If B minus bc isnot greater than L minus cbc, the decision block 424 passes control tothe function block 426, which re-quantizes the block to force a newvalue of N where F is equal to N modulo 2 and N is greater than zero.The function block 426, in turn, passes control to a function block 428.The function block 428 increments the coded block count (cbc), andpasses control to a function block 436 which entropy codes the block,and then passes control to the end loop block 438.

If, however, N is not equal to zero, the decision block 422 passescontrol to a decision block 432. The decision block 432 checks whetherthe fingerprint sequence F is equal to N modulo 2, and if F is equal toN modulo 2, passes control to the function block 428 described above.If, however, F is not equal to N modulo 2, the decision block 432 passescontrol to a function block 426, described previously.

Thus, FIG. 4 shows an encoder with required fingerprint insertion thatloops over the B blocks in a slice or frame, over which the L-bitsequence is required to be embedded. A loop counter bc is used for theblock count. For each block, the initial steps are the same as in FIGS.2 and 3. An inter or intra prediction is formed for the block, andsubtracted from the block to form a residual block. The residual blockis then transformed, using a block transform, to form transformcoefficients. The transform coefficients are quantized, to formquantized coefficients. The number of non-zero quantized coefficients,N, are counted. If N=0, a further check is made, if B−bc, which is thenumber of remaining blocks to be processed, is greater than the L−cbc,which is the number of remaining fingerprint sequence bits to beembedded, in which case the block is not coded. That is, if B−bc>L−cbc,the block is not coded. However, if the B−bc is not greater than L−cbc,the current block must be coded so that a fingerprint bit may beembedded, in order to meet the constraint that all L bits be embedded inthe B blocks. The variable cbc is the coded block count, which trackshow many blocks have been coded, i.e., those blocks that were notclassified as not coded.

Turning to FIG. 5, a fingerprint detector is indicated generally by thereference numeral 500. The fingerprint detector 500 includes a beginblock 540, which passes control to a begin loop block 542. The beginloop block 542 initializes a loop variable cbc to zero, and incrementsit on subsequent iterations up to a maximum value of L. The begin loopblock 542 passes control to a function block 544, which sets a count Nequal to the number of non-zero quantized coefficients in a block, andpasses control to a function block 546. The function block 546, in turn,gets the next bit of the fingerprint sequence, F=FSEQ[cbc], and passescontrol to a decision block 548. The decision block 548 checks whether Fis equal to N modulo 2. If N is not equal to N modulo 2, the decisionblock 548 passes control to a function block 556, which determines thata fingerprint was not detected, and passes control to an end block 558.If, however, N is equal to N modulo 2, the decision block 548 passescontrol to an end loop block 550, which passes control back to the beginloop block 542 if the loop variable cbc is not yet equal to L, orotherwise passes control to a function block 552. The function block 552determines that a fingerprint was detected, and passes control to an endblock 554.

Thus, to detect the fingerprint in a compressed video bitstream, thefirst L coded blocks are tested to see if the embedded watermark bitmatches the L-bit fingerprint sequence, FSEQ. If a pattern is used thatdoes not embed a bit in the first-L coded blocks, such as, for example,one that operates on every Mth block, the process could be adjusted tofollow that same pattern.

In the fingerprint detector embodiment of FIG. 5, the first L codedblocks are looped, with cbc as the loop index. For each block, thenumber of non-zero quantized coefficients, N, is counted. The next bitof the fingerprint sequence, F=FSEQ[cbc], is then compared to N % 2. IfF=N % 2, the loop continues. If at any point in the loop, F≠N % 2, theprocess is ended, and the fingerprint is not detected. If the loopcompletes with the F=N % 2 condition always being met for the L codedblocks, the process is ended and the fingerprint is detected.

If L is sufficiently large, the odds of an un-fingerprinted compressedbitstream's pattern of number of coded coefficients following thepattern of the fingerprint sequence is quite unlikely, approximately 1in 2ˆL. The fingerprint detection of a single group of L coded blocksmay fail if the bitstream has been changed in any way from how it wasoriginally created, i.e. if channel errors occurred. To provide agreater degree of reliability, the fingerprint detector could check eachGOP or IDR of the coded bitstream for the fingerprint.

Turning to FIG. 6, exemplary video encoder for fingerprint insertion isindicated generally by the reference numeral 600. An input to theencoder 600 is connected in signal communication with a non-invertinginput of a summing junction 610. The output of the summing junction 610is connected in signal communication with a block transformer 620. Thetransformer 620 is connected in signal communication with a quantizer630, alternatively embodying a block encoder for fingerprint insertion,which is connected in signal communication with a watermark embedder635. As will be recognized by those of ordinary skill in the pertinentart based on the teachings herein, the encoder 600 need only include oneof the watermark embedder 635 and the fingerprint insertion portion ofthe quantizer 630. The output of the embedder 635 is connected in signalcommunication with a VLC (variable length coder) 640, where the outputof the VLC 640 is an externally available output of the encoder 600.

The output of the quantizer 630 is further connected in signalcommunication with an inverse quantizer 650. The inverse quantizer 650is connected in signal communication with an inverse block transformer660, which, in turn, is connected in signal communication with areference picture store 670. A first output of the reference picturestore 670 is connected in signal communication with a first input of amotion estimator 680. The input to the encoder 600 is further connectedin signal communication with a second input of the motion estimator 680.The output of the motion estimator 680, which is indicative of motionvectors, is connected in signal communication with a first input of amotion compensator 690. A second output of the reference picture store670 is connected in signal communication with a second input of themotion compensator 690. The output of the motion compensator 690, whichis indicative of a motion compensated reference picture, is connected insignal communication with an inverting input of the summing junction610.

As shown in FIG. 7, an exemplary video decoder for fingerprint detectionis indicated generally by the reference numeral 700. The video decoder700 includes a VLD (variable length decoder) 710 connected in signalcommunication with a watermark detector 715, which is connected insignal communication with an inverse quantizer 720, alternativelyembodying a block decoder for fingerprint detection. As will berecognized by those of ordinary skill in the pertinent art based on theteachings herein, the decoder 700 need only include one of the watermarkdetector 715 and the fingerprint detection portion of theinverse-quantizer 720. The inverse quantizer 720 is connected in signalcommunication with an inverse transformer 730. The inverse transformer730 is connected in signal communication with a first input terminal ofa summing junction 740, where the output of the summing junction 740provides the output of the video decoder 700. The output of the summingjunction 740 is connected in signal communication with a referencepicture store 750. The reference picture store 750 is connected insignal communication with a motion compensator 760, which is connectedin signal communication with a second input terminal of the summingjunction 740.

These and other features and advantages of the present invention may bereadily ascertained by one of ordinary skill in the pertinent art basedon the teachings herein. It is to be understood that the principles ofthe present invention may be implemented in various forms of hardware,software, firmware, special purpose processors, or combinations thereof.

Most preferably, the principles of the present invention are implementedas a combination of hardware and software. Moreover, the software ispreferably implemented as an application program tangibly embodied on aprogram storage unit. The application program may be uploaded to, andexecuted by, a machine comprising any suitable architecture. Preferably,the machine is implemented on a computer platform having hardware suchas one or more central processing units (“CPU”), a random access memory(“RAM”), and input/output (“I/O”) interfaces. The computer platform mayalso include an operating system and microinstruction code. The variousprocesses and functions described herein may be either part of themicroinstruction code or part of the application program, or anycombination thereof, which may be executed by a CPU. In addition,various other peripheral units may be connected to the computer platformsuch as an additional data storage unit and a printing unit.

It is to be further understood that, because some of the constituentsystem components and methods depicted in the accompanying drawings arepreferably implemented in software, the actual connections between thesystem components or the process function blocks may differ dependingupon the manner in which the present invention is programmed. Given theteachings herein, one of ordinary skill in the pertinent art will beable to contemplate these and similar implementations or configurationsof the present invention.

Although the illustrative embodiments have been described herein withreference to the accompanying drawings, it is to be understood that thepresent invention is not limited to those precise embodiments, and thatvarious changes and modifications may be effected therein by one ofordinary skill in the pertinent art without departing from the scope orspirit of the present invention. All such changes and modifications areintended to be included within the scope of the present invention as setforth in the appended claims.

1. A method of detecting a digital fingerprint embedded in a compressedvideo bitstream, the method comprising: receiving the digitalfingerprint as a unique identification code having a sequence of bits;and identifying each bit of the unique identification code from acorresponding coded block of the compressed video bitstream by comparingthe bit value of the unique identification code to the parity of thenumber of coded coefficients in the corresponding block.
 2. A method asdefined in claim 1, further comprising: counting the length of thesequence of bits; testing each bit of the sequence of bits up to saidlength against the parity of the number of coded coefficients in eachcorresponding block to see if the embedded bits match the fingerprintsequence.
 3. A method as defined in claim 1, further comprisingselecting the corresponding coded blocks of the compressed videobitstream to be checked for a bit of the unique identification code inaccordance with a selection pattern.
 4. A method as defined in claim 3wherein the selection pattern comprises every consecutive block up tothe number of bits of the unique identification code.
 5. A method asdefined in claim 3 wherein the selection pattern comprises every blockhaving at least one non-zero coefficient up to the number of bits of theunique identification code.
 6. A method as defined in claim 3 whereinthe selection pattern comprises every Nth block up to the number of bitsof the unique identification code.
 7. A method as defined in claim 3wherein the selection pattern comprises every Nth block having at leastone non-zero coefficient up to the number of bits of the uniqueidentification code.
 8. A method as defined in claim 3 wherein theselection pattern comprises every Nth block having at least one non-zerocoefficient up to a block nearing the end of the coded blocks of thecompressed video bitstream, and every block thereafter up to the numberof bits of the unique identification code and the last block of thecompressed video bitstream.
 9. A method as defined in claim 1, furthercomprising detecting multiple copies of the digital fingerprint in thecompressed video bitstream.
 10. A method as defined in claim 9 wherein anew copy of the digital fingerprint is detected for every Group ofPictures or Independent Decoder Refresh period.
 11. A method as definedin claim 1 wherein the coded block is at least one of a block, slice,macroblock, and picture.
 12. A method as defined in claim 3 wherein theentire selection pattern is repeated within every intra-coded picture.13. A video decoder for detecting a digital fingerprint embedded in acompressed video bitstream, the decoder comprising: a detection unit fordetecting bits of the digital fingerprint in blocks of the videobitstream as a function of the parity of the number of codedcoefficients in the block; and an inverse-quantization unit in signalcommunication with the detection unit for inverse-quantizingcoefficients of the video bitstream.
 14. A video decoder for detecting adigital fingerprint embedded in a compressed video bitstream, thedecoder comprising: means for receiving the digital fingerprint as aunique identification code having a sequence of bits; and means foridentifying each bit of the unique identification code from acorresponding coded block of the compressed video bitstream by comparingthe bit value of the unique identification code to the parity of thenumber of coded coefficients in the corresponding block.